// 资源预加载脚本
(function() {
  try {
    // 获取基础URL
    var baseElement = document.querySelector('link[rel="icon"]');
    if (!baseElement) {
      console.warn('无法找到基础URL元素');
      return;
    }
    
    var baseUrl = baseElement.getAttribute('href').replace('favicon.ico', '');
    
    // 核心资源列表 - 这些资源将被预加载
    var coreResources = [
      'static/css/app.css',
      'static/js/app.js',
      'static/js/chunk-vendors.js',
      'static/img/login-background.jpg'
    ];
    
    // 创建预加载函数
    function preloadResource(url) {
      return new Promise(function(resolve, reject) {
        // 首先检查URL是否有效
        if (!url || typeof url !== 'string') {
          console.warn('无效的资源URL:', url);
          reject(new Error('无效的资源URL'));
          return;
        }
        
        var link = document.createElement('link');
        link.rel = 'preload';
        link.href = baseUrl + url;
        
        // 根据资源类型设置正确的属性
        if (url.endsWith('.css')) {
          link.as = 'style';
        } else if (url.endsWith('.js')) {
          link.as = 'script';
        } else if (url.endsWith('.jpg') || url.endsWith('.png') || url.endsWith('.gif')) {
          link.as = 'image';
        } else {
          // 未知资源类型
          console.warn('未知资源类型:', url);
          reject(new Error('未知资源类型'));
          return;
        }
        
        link.onload = function() {
          console.log('资源预加载成功:', url);
          resolve();
        };
        
        link.onerror = function(error) {
          console.warn('资源预加载失败:', url, error);
          // 仍然解决Promise以避免阻止其他资源加载
          resolve();
        };
        
        document.head.appendChild(link);
      });
    }
    
    // 等待页面加载事件
    window.addEventListener('load', function() {
      // 使用requestIdleCallback在浏览器空闲时间加载资源
      if ('requestIdleCallback' in window) {
        requestIdleCallback(function() {
          coreResources.forEach(function(resource) {
            preloadResource(resource).catch(function(error) {
              console.error('预加载过程出错:', error);
            });
          });
        });
      } else {
        // 降级处理
        setTimeout(function() {
          coreResources.forEach(function(resource) {
            preloadResource(resource).catch(function(error) {
              console.error('预加载过程出错:', error);
            });
          });
        }, 1000);
      }
    });
    
    // 添加性能标记以便于监控
    if ('performance' in window && 'mark' in window.performance) {
      performance.mark('preload-start');
      window.addEventListener('load', function() {
        performance.mark('preload-end');
        try {
          performance.measure('preload-duration', 'preload-start', 'preload-end');
        } catch (error) {
          console.warn('性能标记失败:', error);
        }
      });
    }
  } catch (error) {
    console.error('预加载脚本初始化失败:', error);
  }
})(); 